/*
 * CreazioneAccountServlet
 * 
 * Author: Carmine Colicino, Luigi Di Martino
 * Version: 1.0
 * 
 * 2014 - Copyright by Team 6 - University of Salerno
*/

package it.unisa.udocs.gestioneSistema;

import it.unisa.udocs.data.*;
import it.unisa.udocs.facade.FacadeSistema;
import it.unisa.udocs.facade.IFacadeSistema;

import java.io.IOException;
import java.sql.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class CreazioneAccountServlet
 */
public class CreazioneAccountServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public CreazioneAccountServlet() {
        super();
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, 
			HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, 
			HttpServletResponse response) throws ServletException, IOException {
		IFacadeSistema facSis = new FacadeSistema();
		
		Account account = null;
		int id_account = 0;
		
		//Prende i parametri dal form di inserimento
		String username = request.getParameter("ACC_USER");
		String password = request.getParameter("ACC_PSW");
		String tipologia = request.getParameter("ACC_TIPOLOGIA");
		
		//Istanzia un oggetto Account con i parametri presi dal form di inserimento
		account = new Account(0, username, password, tipologia);
		
		id_account = facSis.creaAccount(account);
		
		//Costruisce le diverse specializzazioni di Account a seconda della tipologia scelta in fase di inserimento 
		if(tipologia.equals("responsabile")) {
			String respNome = request.getParameter("RESP_AT_NOME");
			String respCognome = request.getParameter("RESP_AT_COGNOME");
			int evento = Integer.parseInt(request.getParameter("RESP_AT_EVT"));
			
			account = new ResponsabileAteneo(id_account, username, 
					password, tipologia, respNome, respCognome, evento);
			facSis.creaResponsabileAteneo(account);
		}
		else {
			String ricerNome = request.getParameter("RICER_NOME");
			String ricerCognome = request.getParameter("RICER_COGN");
			String codiceFiscale = request.getParameter("RICER_COD_FISC");
			String dataString = request.getParameter("RICER_DATA_NASC");
			String cittaNascita = request.getParameter("RICER_CITTA_NASC");
			String sesso = request.getParameter("RICER_SEX");
			String indirizzo = request.getParameter("RICER_INDIRIZZO");
			String email = request.getParameter("RICER_EMAIL");
			String ruolo = request.getParameter("RICER_RUOLO");
			String matricola = request.getParameter("RICER_MATRIC");
			int annoMessaInRuolo = Integer.parseInt(
					request.getParameter("RICER_ANNO_MES_RUOLO"));
			int dipartimento = Integer.parseInt(
					request.getParameter("RICER_DIPART"));
			int areaScientifica = Integer.parseInt(
					request.getParameter("RICER_AREA_SCI"));
			
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        	java.util.Date dt = null;
			try {
				dt = sdf.parse(dataString);
			} catch (ParseException e) {
				e.printStackTrace();
			}
        	Date dataNascita = new Date(dt.getTime());
        	
        	account = new Ricercatore(id_account, username, password, 
        			tipologia, ricerNome, ricerCognome, codiceFiscale, 
        			dataNascita, cittaNascita,sesso, indirizzo, email,
        			ruolo, matricola, annoMessaInRuolo, dipartimento, 
        			areaScientifica);
        	facSis.creaRicercatore(account);
		}
		
		response.sendRedirect("./homeAmministratore.jsp");
	}

}
